package src.main.BehavioralPatterns.Observer;

public class WeatherMonitoringSystem {
    public static void main(String[] args) {
        // 创建气象站（被观察者）
        WeatherStation station = new WeatherStation();

        // 创建显示设备（观察者）
        CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay();
        StatisticsDisplay statisticsDisplay = new StatisticsDisplay();
        MobileApp mobileApp = new MobileApp();

        // 注册观察者：添加到气象站的观察列表中
        station.registerObserver(currentConditionsDisplay);
        station.registerObserver(statisticsDisplay);
        station.registerObserver(mobileApp);

        // 模拟第一次气象数据更新（自动触发所有观察者更新）
        System.out.println("=== 第一次数据更新 ===");
        station.setMeasurements(26.5f, 65, 1012.5f);

        // 模拟第二次气象数据更新
        System.out.println("\n=== 第二次数据更新 ===");
        station.setMeasurements(27.3f, 62, 1011.8f);

        // 模拟第三次数据更新（先移除一个观察者）
        System.out.println("\n=== 第三次数据更新（移除手机APP） ===");
        station.removeObserver(mobileApp); // 取消手机APP订阅
        station.setMeasurements(25.9f, 68, 1013.2f);
    }
}
